sohn(anna, bob, charlie).
sohn(anna, bob, detlef).
sohn(trinity, neo, morpheus).
sohn(emily, morpheus, peter).

sohn(galadriel, gandalf, bob).
sohn(galadriel, gandalf, neo).

tochter(trinity, neo, morphine). 
tochter(nicole, neo, necole).  %Halbschwester von morphine
tochter(anna, bob, emily).


verheiratet(Mutter, Vater) :- kind(Mutter, Vater, _).
kind(Mutter, Vater, Kind) :- sohn(Mutter, Vater, Kind).
kind(Mutter, Vater, Kind) :- tochter(Mutter, Vater, Kind).

kind(Kind, Elternteil) :- vater(Elternteil, Kind).
kind(Kind, Elternteil) :- mutter(Elternteil, Kind).

vater(Vater, Kind) :- kind(_, Vater, Kind).
mutter(Mutter, Kind) :- kind(Mutter, _, Kind).

sohn(Sohn, Elternteil) :- sohn(Elternteil, _, Sohn).
sohn(Sohn, Elternteil) :- sohn(_, Elternteil, Sohn).

tochter(Tochter, Elt) :- tochter(Elt, _, Tochter).
tochter(Tochter, Elt) :- tochter(_, Elt, Tochter).

bruder(Bruder, Y) :- sohn(Mutter,Vater, Bruder), kind(Mutter, Vater, Y), Bruder\= Y.
schwester(Schwester, Y) :- tochter(Mutter,Vater, Schwester), kind(Mutter, Vater, Y), Schwester \= Y.

onkel(Onkel, X) :- kind(_, Vater, X), bruder(Onkel, Vater).
onkel(Onkel, X) :- kind(Mutter, _, X), bruder(Onkel, Mutter).

tante(Tante, X) :- kind(_, Vater, X), schwester(Tante, Vater).
tante(Tante, X) :- kind(Mutter, _, X), schwester(Tante, Mutter).

geschwister(X, Y) :- kind(Mutter, Vater, X), kind(Mutter, Vater, Y), X\=Y.

cousin(Cousin1, Cousin2) :- kind(_, Vater1, Cousin1), kind(_, Vater2, Cousin2), geschwister(Vater1, Vater2).
cousin(Cousin1, Cousin2) :- kind(Mutter1, _, Cousin1), kind(Mutter2, _, Cousin2), geschwister(Mutter1, Mutter2).
cousin(Cousin1, Cousin2) :- kind(Mutter1, _, Cousin1), kind(_, Vater2, Cousin2), geschwister(Mutter1, Vater2).
cousin(Cousin1, Cousin2) :- kind(_, Vater1, Cousin1), kind(Mutter2, _, Cousin2), geschwister(Vater1, Mutter2).

halbschwester(Halbschwester, Y) :- kind(Mutter1, Vater2, Y), tochter(Mutter1, Vater1, Halbschwester), Halbschwester\= Y, Vater2\=Vater1.
halbschwester(Halbschwester, Y) :- kind(Mutter1, Vater1, Y), tochter(Mutter2, Vater1, Halbschwester), Halbschwester\= Y, Mutter1\=Mutter2.
